package com.huayi.datagovernance.dao.master;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huayi.datagovernance.common.SysConstant;
import com.huayi.datagovernance.entity.TYwTaskYk;
import com.huayi.datagovernance.vo.WorkOrderPageVo;
import com.huayi.datagovernance.vo.XlListVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 设备模型服务-接口
 * @version 1.0
 * @date 2021/4/21 20:26
 */
@DS(SysConstant.DBSOURCE_POSTGRESQL)
public interface DeviceDao {
    /**
     * 查询PG库新建的设备信息
     * @date 2021/4/21 21:53
     * @param param
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    List<JSONObject> getDeviceMainList(JSONObject param);

    /**
     * 查询PG库新建的设备信息
     * @date 2021/4/21 21:53
     * @param param
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    JSONObject getDeviceMainOne(JSONObject param);

    /**
     * 查询PG库下发的台区设备信息
     * @date 2021/4/21 22:36
     * @param param
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    List<JSONObject> getDeviceTqList(JSONObject param);

    /**
     * 查询PG库下发的台区设备信息
     * @date 2021/4/21 22:36
     * @param param
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    JSONObject getDeviceTqOne(JSONObject param);

    /**
     * 查询资源表设备名称（根据modelname,oid)
     * @date 2021/4/21 22:36
     * @param modelname 表名
     * @param oid 主键oid
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    JSONObject getSbmcByModelnameAndOid(@Param("modelname") String modelname, @Param("oid") Long oid);

    /**
     * 从下发的数据中查询设备的名称（根据modelname,oid)
     * @date 2021/4/21 22:36
     * @param tableName 表名
     * @param sboid 主键oid
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    List<JSONObject> getSbmcByTableAndOidFromIssue(@Param("tableName") String tableName, @Param("sboid") Long sboid);

    /**
     * 获取任务列表(可带分页参数)
     * @date 2021/4/23 15:04
     * @param param
     * @return java.util.List<com.huayi.datagovernance.vo.WorkOrderPageVo>
     */
    List<WorkOrderPageVo> getWorkOrderPage(JSONObject param);

    /**
     * 获取线路列表
     * @date 2021/4/23 15:04
     * @param param
     * @return java.util.List<java.util.Map>
     */
    List<XlListVo> getXlList(JSONObject param);

    /**
     * 修改高压核查工单状态
     * @date 2021/4/24 17:16
     * @param taskId 工单号
     * @param status 工单状态  1 待核查  2 待审核 3 已完成  -1 待完善
     * @return int
     */
    int updateHighCheckStatus(@Param("taskId") String taskId,@Param("status") String status);

    /**
     * 根据设备字段+值 新增数据表 离线版
     * @param param
     * @return
     */
    int insertDeviceModel2(JSONObject param);

    /**
     * 根据设备字段+值 新增数据表
     * @param param
     * @return
     */
    int insertDeviceModel(Map param);

    /**
     * 获取当前设备的所有问题列表
     * @date 2021/4/26 15:33
     * @param queryWrapper 自定义查询条件
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<JSONObject> getCurrentDevicePros(@Param("ew") QueryWrapper<Map<String,Object>> queryWrapper);

    /**
     * 查询朗新工单明细
     * 主要是变压器的清单
     * @date 2021/4/26 16:53
     * @param gdType
     * @param taskId
     * @return java.util.List<com.huayi.datagovernance.entity.TYwTaskYk>
     */
    List<TYwTaskYk> getWorkOrderDetail(int gdType, String taskId);

    /**
     * 根据字段修改值+条件 修改数据表
     * @date 2021/4/27 16:59
     * @param param
     * @return int
     */
    int updateDeviceModel(Map param);

    /**
     * 根据字段删除值+条件 修改数据表
     * @date 2021/4/29 10:01
     * @param param
     * @return int
     */
    int deleteDeviceModel(Map param);

    /**
     *
     * @param param
     * @return
     */
    int getTaskListCount(Map<String, Object> param);
}
